---
id: unit5
title: 第五章 数据库编程 
---


## 存储过程
存储过程是一组为了完成某项特定功能的SQL语句集，其实质上就是一段存储在数据库中的代码。用户只需通过指定存储过程的名字并给定参数（如果该存储过程带有参数），即可随时调用并执行它，而不必重新编译，加大了数据库操作语句的执行效率。

存储过程可以由声明式的SQL语句和过程式SQL语句组成。

使用存储过程的好处有：
（1）可增强SQL语言的功能和灵活性。
（2）良好的封装性。
（3）高性能。
（4）可减少网络流量。
（5）存储过程可作为一种安全机制来确保数据库的安全性和数据的完整性。

在MySQL中，使用CREATE PROCEDURE语句来创建存储过程，其常用的语法格式是：
CREATE PROCEDURE sp_name([proc_parameter[,···]])
routine_body

在MySQL中创建存储过程时，常用的循环语句有：  
（1）WHILE语句。  
（2）REPEAT语句。 
（3）LOOP语句。

使用DELIMITER命令可以将MySQL语句的结束标志临时修改为其他符号。

游标是一个被SELECT语句检索出来的结果集。

在MySQL中，使用游标的具体步骤为：  
（1）声明游标。  
（2）打开游标。  
（3）读取数据。  
（4）关闭游标。  

## 存储函数
存储函数是由SQL语句和过程式语句组成的代码片断，可以被应用程序和其他SQL语句调用。

存储函数和存储过程的区别有：  
（1）存储函数不能拥有输出参数，这是因为存储函数自身就是输出参数；而存储过程可以拥有输出参数。  
（2）可以直接对存储函数进行调用，且不需要使用CALL语句；而对存储过程的调用，需要使用CALL语句。  
（3）存储函数中必须包含一条RETURN语句，而这条特殊的SQL语句不允许包含于存储过程中。

在MySQL中，可以使用关键字 SELECT调用已经创建好的存储函数。语法格式是：
SELECT sp_name([func_parameter[,···]])